// 加载express模块
var express = require('express')
// 加载模板
var swig = require('swig')
var mongoose = require('mongoose')
// 创建app应用server
var app = express()
// 用来处理post请求提交的数据
var bodyParser = require('body-parser')
// 加载Cookies模块
var Cookies = require('Cookies')
// !设置文件托管，处理静态资源
// 对应的前端url需要以public开头，后续路径根据文件路径对应匹配
app.use('/public', express.static(__dirname + '/public'))
/**
 * !配置应用模板引擎
 * 参数：{
 *  1. 模板引擎的名称也是文件后缀
 *  2. 用于解析处理模板内容的方法
 * }
 */
app.engine('html', swig.renderFile)
// 设置模板文件存放的目录,第一个参数为views，第二个参数为目录
app.set('views', './views')
// 注册使用的模板引擎，第一参数固定，第二参数为app.engine定义的模板类型
app.set('view engine', 'html')
// swig会对静态资源做缓存处理，在开发过程中需要取消模板缓存
swig.setDefaults({ cache: false })

// !bodyparser 解析post内容
app.use(bodyParser.urlencoded({ extended: true }))
// !设置cookie
app.use(function(req, res, next) {
  req.cookies = new Cookies(req, res)
  next()
})
//!根据路由动态返回HTML文件
// app.get('/', function(req, res, next) {
//   res.render('index')
// })
// 分模块加载文件
// app.use('/admin', require('./routers/admin'))
app.use('/api', require('./routers/api'))
app.use('/', require('./routers/main'))
// 加载数据库
mongoose.connect(
  'mongodb://localhost:27018/blog',
  { useMongoClient: true }
)
mongoose.Promise = global.Promise
var Cat = mongoose.model('Cat', { name: String })

var kitty = new Cat({ name: 'Zildjian' })
kitty.save(function(err) {
  if (err) {
    console.log(err)
  } else {
    console.log('数据库连接成功...')
    // 监听客户端口
    app.listen(8081)
  }
})
